スプレッドシートのトリガー(フォーム送信時)で新規のシートを認識しない

36 views
Skip to first unread message

takuya

unread,
Mar 26, 2020, 1:29:38 AM3/26/20
to Google Apps API Japan
◆やろうとしていること
フォームAとスプレッドシートをリンクしています。
フォームAで回答した内容はスプレッドシートに自動的に転記されます。

そのスプレッドシートにはトリガーがあります。
フォーム送信時に実行されます。

トリガーで実行されるGASの中身の流れは以下のとおりです。

①フォームAを複製する(フォームBと呼ぶ)
②フォームBを同じスプレッドシートにリンクさせる
(リンクさせるとスプレッドシートの一番初め(左)に回答シートが自動的に作成される)
③一番左(シートインデックスが0)のシートの名前を変更する


◆問題・不明点

上記③で、名前が変更できません。
具体的に言えば、

 var sh=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];

でshに入るのは、上記②でリンクさせる前の一番初めのシートです。
自動的に作成れる前に先にスクリプトが走ってるのかと思い、while文で

 「②の前のシート数と同じシート数である場合は待機」

のコードを付けて待機させても、シート数は➁の前の数しか認識されません。
明らかに目で見て追加されており、十分時間がたっているのに➁で作成されたシートは認識されません。

一度スクリプトを終了して、再度シート数を数えると②で作成されたシートも含めた合計シート数が取得されます。
もちろん、

 var sh=SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];

で取得されるのも新規シートです。

つまり、連続するスクリプトでは➁で生成されたシートを認識されないということでしょうか?
これをなんとか認識したいのですが、何か良い方法ございましたらアドバイスください。
Reply all
Reply to author
Forward
0 new messages