在我不斷努力掌握 google 腳本的程序中:我試圖遍歷作業表中的專案串列 - 只要 A 列中有“X”,我想復制我的活動檔案,然后保存新檔案到我的活動檔案中。在我的第二大腦(也稱為 google)和本論壇上一位樂于助人的人的幫助下,我已經弄清楚了大部分內容,但我一直在思考如何獲取新檔案的 URL 并將其保存到我的作業表中. 在此期間,我還想將當前日期保存到同一張表的 B 列中。這是到目前為止的代碼:
function LoopSaveSend() {
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("4 Week Cycle");
var lastRow = activeSheet.getLastRow();
var lastCol = activeSheet.getLastColumn();
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Log");
var lastSourceRow = sourceSheet.getLastRow();
var lastSourceCol = sourceSheet.getLastColumn();
var sourceRange = sourceSheet.getRange(1, 1, lastSourceRow, lastSourceCol);
var sourceData = sourceRange.getValues();
var activeRow = 0;
//Loop through every retrieved row from the Source
for (row in sourceData) {
//IF Column A in this row has 'X', then work on it.
if (sourceData[row][0] == 'X') {
//Save it to a temporary variable
var tempvalue = [sourceData[row][2]];
activeSheet.getRange('rfInitials').setValue(tempvalue);
var spreadsheet = SpreadsheetApp.getActive();
var rffilename = spreadsheet.getRange('rfFileName').getValue();
spreadsheet.copy(rffilename);
var url = SpreadsheetApp.openById(rffilename).getUrl();
sourceData[row][4].setValue(url);
sourceData[row][0].setValue("")
}
}
}
這是最后 3 行不起作用(我什至不知道最后 2 行是否會起作用,因為我還沒有那么遠。)我得到的錯誤是我需要打開檔案的權限- 但實際上我不想打開它 - 只想獲取 URL。另外 - 還沒有獲取日期的代碼......嬰兒步驟等等。非常感謝任何幫助。
uj5u.com熱心網友回復:
要獲取新復制的電子表格的 URL,請更改以下兩行:
spreadsheet.copy(rffilename);
var url = SpreadsheetApp.openById(rffilename).getUrl();
到這一行:
var url = spreadsheet.copy(rffilename).getUrl()
這里的關鍵是,根據檔案,copy方法
復制電子表格并回傳新的。
所以你可以.getUrl()直接呼叫的結果copy來獲取新副本的 URL。
此行無法按書面方式作業的原因:
var url = SpreadsheetApp.openById(rffilename).getUrl();
那rffilename不是檔案ID,而是檔案名。要使用,.openById您需要知道新副本的檔案 ID(您可以使用它,spreadsheet.copy(rffilename).getId()但在這種情況下您不需要)。
您還會發現最后兩行不起作用,就像Range物件的.setValue一個方法一樣。您需要將這些更改為類似
activeSheet.getRange(row,4).setValue(url);
activeSheet.getRange(row,0).setValue("")
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372950.html
