スプレッドシート上で、ドメイン、appID, APIキー, レコード番号を入力させ、ボタン押下でkintone の対象レコードからスプレッドシートに情報を取り込むような処理を作っています。
テスト環境では動くのですが、本番環境に移設すると何故か添付のエラーが出てしまいます。止まっているのは「varfolder = DriveApp.getFolderById(folderId)」のところです。
kintone 側の設定側の何かでgoogle 側からのアクセスを拒否している? のでは、と思うのですが、何かあるある的なアドバイスがあればいただきたいです。
function postedFromKitone() {
// ポップアップNoなら処理終了
if(Browser.msgBox(“kintoneから情報を取得する”,Browser.Buttons.YES_NO) == “no”) return
// 呼び出し元スプレッドシート
letspreadSheet = SpreadsheetApp.getActive()
letsheetConst = spreadSheet.getSheetByName(‘const’)
letsheetKomon = spreadSheet.getSheetByName(‘客情報’)
letdomain = sheetConst.getRange(“B10”).getValue()
// レコード取得用URL
varurlGetRecords = “https://” + domain + “/k/v1/records.json”
// アプリID
varappId = sheetConst.getRange(“B11”).getDisplayValue()
// アプリAPIトークン
varapiToken = sheetConst.getRange(“B12”).getValue()
// 対象レコードID
varrecordId = sheetKomon.getRange(“B26”).getDisplayValue()
letappLink = Utilities.formatString(“https://%s/k/%s/show#record=%s”, domain, appId, recordId)
letfields = Array.prototype.concat.apply([], sheetKomon.getRange(“B2:B11”).getDisplayValues())
// kintoneからデータを取得
varparamFields = “&fields=” + encodeURIComponent(fields.join(“,”));
varquery = “&$id=”+ recordId
varurl = urlGetRecords + “?app=” + appId + paramFields + query;
varres = JSON.parse(UrlFetchApp.fetch(url, {“method”: “get”,“headers”: {“X-Cybozu-API-Token”: apiToken}}));
varrec = res.records[0]
// 客情報整形
varoutput = [];
fields.forEach(field => {
letvalue = “”
if(rec[field].type == ‘USER_SELECT’){
if(rec[field].value.length){
value = rec[field].value[0].name
}
}else{
value = rec[field].value
}
output.push([value])
});
letfolderId = rec[“客フォルダリンク”].value.split(‘/’).slice(-1)[0].split(‘?’)[0]
letfileName = Utilities.formatString(“%s_%s年度_チェックリスト”, rec[“取引先名”].value, rec[“期首の日付”].value.split(‘-’)[0])
vartemplate = DriveApp.getFileById(spreadSheet.getId())
varfolder = DriveApp.getFolderById(folderId)
// 指定フォルダにファイルをコピー
letcopiedFile = template.makeCopy(fileName, folder)
letcopiedSheet = SpreadsheetApp.open(copiedFile)
letcopiedSheetKomon = copiedSheet.getSheetByName(‘客情報’)
// 客情報に転記
copiedSheetKomon.getRange(‘C2:C11’).setValues(output)
copiedSheetKomon.getRange(26, 3).setValue(appLink)
Browser.msgBox(“****”)
}
— 以下別の処理が続く