Googleフォームへの送信をトリガーとして、他のスプシに情報を転記するコードを書こうとしたら、エラーが出てしまい困ってしまったので備忘録です。
調べてもあまり対処法が見つからず、同じように困ってる人への助けのなれば嬉しいです!
今回やりたかったことと出たエラー
【やりたかったこと】
Googleフォームへの送信があった時に、入力された内容を別のスプシ(複数)に転記する
Googleフォームは入力内容がスプシに一覧として自動で保存されるが、その内容を他のスプシにも一部だけ転記したかったのでGASを使って実現したかった
【エラーの内容】
Googleフォームを送信してみると、このようなエラーが表示される
Exception: You do not have permission to call FormApp.getActiveForm. Required permissions: (https://www.googleapis.com/auth/forms.currentonly ||https://www.googleapis.com/auth/forms) at Tenki(コード:3:20)
日本語表記の場合はおそらくこう
Exception: FormApp.getActiveFormを呼び出す権限がありません。必要な権限:(https://www.googleapis.com/auth/forms.currentonly ||https://www.googleapis.com/auth/forms) at Tenki(コード:3:20)
つまり、何かしらの権限が無くて実行できないのはわかった。
その許可というのが恐らくこの2つ。
- https://www.googleapis.com/auth/forms.currentonly
- https://www.googleapis.com/auth/forms
で?この権限どうしたら追加できるの!?
というところで情報を探すのが大変だったんです。。。
実行しようとしたコード
今回実行したかったコードはこちらです。これから説明する対処方法をすれば動いたので、コード自体は問題無かったもよう。
function Tenki(e) {
// フォームの回答を取得して指定のスプレッドシートに転記する
const values = e.response.getItemResponses();
const targetCol = 1; // 転記先の列番号
// 回答から特定の項目を取得
let targetValue = values[0].getResponse(); // 回答の1番目の項目(名前)を取得
let targetValue2 = values[1].getResponse(); //回答の2番目の項目(メアド)を取得
const ssid = '1uvR1wjO-B8bgX7V188I0jNcH5cylFrwurq0gvB9TA74';// 転記したいスプシのIDを指定
const sht = SpreadsheetApp.openById(ssid).getSheetByName('シート1');// 転記したいスプシのシート名を指定
const lrow = sht.getLastRow();//最終行を取得
//取得したデータを転記
sht.getRange(lrow + 1, targetCol).setValue(targetValue);
sht.getRange(lrow + 1, targetCol+1).setValue(targetValue2);
}
対処方法
GASを書く画面の左側に、歯車マークがあるのでそちらをクリック
クリックすると、下図のような設定の画面がでてくるので「appsscript.json」マニフェスト ファイルをエディタで表示するという項目にチェックを入れる
コードを書く画面に戻ると、コード.gsの上にが表示されるようになる
おそらくデフォルトでは下図ような内容になっている
ここに、先ほど足りないと言われた権限を追加していく
(下記をコピペしてご利用下さい)
エラーで出たものに加えて、spredsheetsというものが増えていますが、2つだけ追加して実行したら「spredsheetsも追加して」っていうエラーが出たのでこちらも必要だと判明しました…
実行したい内容によっては別の権限も追加してとエラーが出るかもしれないので、同様の手順で追加してもらえればOKです。
"oauthScopes": [
"https://www.googleapis.com/auth/forms",
"https://www.googleapis.com/auth/forms.currentonly",
"https://www.googleapis.com/auth/spreadsheets"
]
最終的にできたコード画面がこちら
赤枠で囲った『 , 』なのですが、これを追加しないと保存をしようとしたときにこのようなエラーになります。
下にコードを追加する場合は、カンマが必要なのでお気を付けください。私はこれに引っかかってしばらく悩みました^^;
まとめ
というわけで今回は、GASを使ってGoogleフォームの入力内容をスプレッドシートに転記するコードと、その際に出たエラーの対処法について紹介しました。
同じエラーで困っている人の助けになれば幸いです。
コメント