簡體   English   中英

如何在不使用電子表格 ID 的情況下使用 Google 腳本從另一個 Google 表格導入數據(2020 年 7 月更新停止了我的代碼工作)

[英]How to import data from another Google Sheet using Google Script without using Spreadsheet ID (July 2020 update stopped my code working)

我之前在 Stack Overflow 上詢問過如何在不使用電子表格 ID 的情況下使用 Google Script 從另一個 Google Sheet 導入數據。 以前的問題和答案,已經回答並且工作正常。 現在看來,谷歌已經更新了一些阻止它工作的東西,因此無法完成錯誤電子郵件正在向我的收件箱發送垃圾郵件。

我現在收到以下錯誤:

異常:無法檢索下一個 object:迭代器已到達末尾。 (第 2 行,文件“數據導入”)

“數據導入”是我的腳本文件的名稱。

不僅如此,當我嘗試在同一張工作表上運行其他腳本時,除非我完全刪除此腳本,否則其他腳本也無法運行。

這是運行完美但現在停止的代碼。

var folder = DriveApp.getFoldersByName("SOURCE FOLDER NAME").next();
var file = folder.getFilesByName("SOURCE FILE NAME").next();
var sourceSpreadsheetID = file.getId();
var sourceWorksheetName = "SOURCE WORKSHEET NAME";
var targetSpreadsheetID = "TARGET FILE ID";
var targetWorksheetName = "TARGET WORKSHEET NAME";

function importData1() {
    var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID);
    var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName);
    //var thisData = thisWorksheet.getDataRange();
    var thisData = thisSpreadsheet.getRangeByName("A:Q");

    var toSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetID);
    var toWorksheet = toSpreadsheet.getSheetByName(targetWorksheetName);
    var toRange = toWorksheet.getRange(1, 1, thisData.getNumRows(), thisData.getNumColumns())
    toRange.setValues(thisData.getValues()); 
}

恕我直言,在全局 scope 中使用 Google Apps 腳本調用不是一個好主意。 正如您已經面臨的那樣,腳本中當前調用的問題使其他功能無法正常工作。

您要做的第一件事是將這些行從全局 scope 移動到另一個地方。 您可以將它們放在try...catch中,在它自己的 function 或importData1() function 聲明中。

關於第2行的具體錯誤:

var file = folder.getFilesByName("SOURCE FILE NAME").next();

這意味着代碼在文件夾中找不到名為SOURCE FILE NAME的文件。 可能文件名已更改或有效用戶無權訪問文件。 如果在隱身模式下運行代碼有效,那么問題在於運行代碼的用戶已在多個 Google 帳戶中登錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM