前提・実現したいこと
Google Spreadsheetにて、
「特定のフォルダから、特定の名前のcsvファイルを探し、Spreadsheet形式に変換し、内容をシートに転記する」
というスクリプトを組みました。
発生している問題・エラーメッセージ
GoogleJsonResponseException: 次のエラーが発生し、drive.files.copy の呼び出しに失敗しました: User rate limit exceeded at PasteResult(result貼り付け:23:52) at allFunctions(全部:6:3) at zenbu(全部(ライブラリ):2:17)
重要そうな前提として、上記は自分の環境でしか起こらないようで、
他2人はそれぞれの環境で何度も実行もらいましたが、一度も下記エラーにはなりませんでした。
■上記各関数の説明
PasteResult(result貼り付け:23:52)
└ソースコードです。エラーはここで起こっています。
allFunctions
└こちらで他のfunctionと一つにまとめて、1回のアクションで実行できるようにしてます。
zenbu
└上記はライブラリ化しているので、Activeなスプシで実行するのはこちらのfunctionです。
該当のソースコード
エラー箇所は「スプシ形式に変換したコピー元データのシートから、すべての値を取得」のコメントアウトがある辺りだと思います。
「Drive.Files.copy」はここでしか使っていません。
試行錯誤中でコメントアウト多いですが・・・
GoogleAppScript
1function PasteResult() { 2 //現在のスプシのidと、貼り付け対象のシートを取得 3 const Spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 4 const thisSsId = Spreadsheet.getId(); 5 Logger.log(thisSsId); 6 const pasteSheet = Spreadsheet.getSheetByName('実績'); 7 8 //コピー元データのExcelファイルを名前から取得 9 const folder = DriveApp.getFolderById('1Pbjckajhkh51EUBgOHDlMTJBM');//ロ―データフォルダのID 10 const files = folder.getFilesByName('result_' + thisSsId + '.csv'); 11 const file = files.next(); 12 Logger.log(file); 13 14 //おそらく、Excelからスプシへの変換で必要な操作(ネット上のコード) 15// options = { 16// title : file.getName(), 17// mimeType: MimeType.GOOGLE_SHEETS, 18// parents : [{ id: folder.getId() }] 19// } 20 21 //スプシ形式に変換したコピー元データのシートから、すべての値を取得 22// const newSs = SpreadsheetApp.openById(Drive.Files.insert(options, file.getBlob()).id); //ExcelをSSに変換し取得 23const newSs = SpreadsheetApp.openById(Drive.Files.copy({parents: [{id: folder.getId()}]}, file.getId(), {convert: true}).id) 24 25 // 変換後のスプレッドシートのタイムゾーンをAsia/Tokyoに設定しなおす。 26 newSs.setSpreadsheetTimeZone("Asia/Tokyo"); 27 const newSheet = newSs.getActiveSheet(); 28 const values = newSheet.getDataRange().getValues(); 29 Logger.log(values[1][0]); 30 31 32 //現在のスプシの貼り付け先シートに、コピーした範囲を貼り付け 33 pasteSheet.getRange(1, 2, values.length, values[0].length).setValues(values); 34 35 //スプシ形式に変換したファイルをゴミ箱に移動 36 //DriveAppクラスからファイルIDでファイル一意に取得する 37 const fileData = DriveApp.getFileById(newSs.getId()); 38//IDから取得したファイルをゴミ箱のフラグをtrueにする 39 const getData = fileData.setTrashed(true); 40}
試したこと
エラー箇所はおそらく下記だと思うのですが、関連するフォルダ内には最大100ファイル程度しかなく、User rate limit exceededしそうな感じはしない気がしてます・・・。
GoogleAppScript
1const newSs = SpreadsheetApp.openById(Drive.Files.copy({parents: [{id: folder.getId()}]}, file.getId(), {convert: true}).id)
検索しても同様の事象を見つけられず、非常に困っています。
知見のある方のお力を借りたいです。
何卒、よろしくおねがいします!
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。